package com.demo.java.OD1_50.OD26;

import java.util.Scanner;
import java.util.TreeSet;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【密室逃生游戏】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145537020
 */
public class OdMain {

    /**
     * solveMethod方法用于解决问题，通过匹配输入字符串中符合条件的单词。
     *
     * @param key   需要与输入中的字符集合进行比较的目标字符串
     * @param input 输入的字符串，包含多个以空格分隔的单词
     * @return 如果找到了符合条件的单词，则返回该单词的索引，否则返回-1
     */
    public static int solveMethod(String key, String input) {
        // 如果key或input为空，返回-1
        if (key == null || input == null)
            return -1;

        // 去掉前两个字符后，将剩余部分按空格分割成单词数组
        String[] strs = input.substring(2).split(" ");

        // 遍历每个单词
        for (int i = 0; i < strs.length; ++i) {
            // 将单词转换为小写
            String low = strs[i].toLowerCase();

            // 使用TreeSet去重并存储字符
            TreeSet<Character> charTreeSet = new TreeSet<>();
            // 遍历每个字符
            for (char c : low.toCharArray()) {
                // 如果字符是字母，则添加到TreeSet中
                if (c <= 'z' && c >= 'a') {
                    charTreeSet.add(c);
                }
            }

            // 如果key的长度等于字符集合的大小，继续判断
            if (key.length() == charTreeSet.size()) {
                StringBuilder sb = new StringBuilder();

                // 将TreeSet中的字符按顺序拼接成字符串
                for (Character cha : charTreeSet) {
                    sb.append(cha);
                }

                // 如果拼接的字符串与key相等，返回当前单词的索引
                if (key.equals(sb.toString())) {
                    return i;
                }
            }
        }

        // 如果没有找到符合条件的单词，返回-1
        return -1;
    }

    public static void main(String[] args) {
        try {
            // 创建Scanner对象用于读取输入
            Scanner s = new Scanner(System.in);

            // 读取目标字符串key
            String key = s.nextLine();

            // 读取输入字符串input
            String input = s.nextLine();

            // 调用solveMethod方法并打印返回的结果
            System.out.println(solveMethod(key, input));
        } catch (Exception e) {
            // 捕获并打印异常
            e.printStackTrace();
        }
    }
}
